home *** CD-ROM | disk | FTP | other *** search
/ The Macintosh Demo Applications CD / Apple-MacintoshDemoApplicationsCD-1.0-1992.iso / More Information / QuicKeys / For Programmers Only.sea / Pascal Examples / SampleX.p < prev    next >
Text File  |  1991-06-22  |  2KB  |  94 lines

  1. (*    $Workfile$ *)
  2. (*    $Revision$ *)
  3.  
  4. {    QuicKeys 2™ sample extension execution routine}
  5.  
  6. {    © 1990 CE Software, Inc.  All rights reserved.}
  7.  
  8. {    For QuicKeys 2 Extension Sample source code you have a royalty-free right }
  9. {    to include object code derived from this Sample source code in programs }
  10. {    that you develop.  You also have the right to use, distribute, and license }
  11. {    such programs to third parties without payment of any further license fees }
  12. {    to CE Software, Inc., so long as a copyright notice sufficient to protect }
  13. {    your copyright for your software in the United States or any other country; }
  14. {    is included in the graphic display of your software and on the labels }
  15. {    affixed to the media on which your software is distributed. }
  16.  
  17. {    WHEN    WHO        WHAT}
  18. {•••••}
  19. {    9/5        mkg        created version for both MPW and Think Pascal }
  20. {•••••}
  21.  
  22.  
  23. unit SampleExtensionX;
  24.  
  25. interface
  26.  
  27.     uses
  28. {$ifc undefined THINK_PASCAL}
  29.         Memtypes, Quickdraw, OSIntf, ToolIntf, PackIntf, OSUtils, 
  30. {$endc}
  31.         extensions, SampleData;
  32.     {$D-}
  33.     {$R-}
  34.  
  35.     procedure doExecute (wSelector: integer;
  36.                                     var myData: SampleDataRec;
  37.                                     var myQueue: ExecuteQueue;
  38.                                     wPeriodicType: integer);
  39.  
  40. implementation
  41.  
  42.     procedure doExecute (wSelector: integer;
  43.                                     var myData: SampleDataRec;
  44.                                     var myQueue: ExecuteQueue;
  45.                                     wPeriodicType: integer);
  46.         var
  47.             hSicn: Handle;
  48.             ulNow: longint;
  49.     begin
  50.         case wSelector of
  51.             initX: 
  52.                 begin
  53.                 { fetch our SICN and move it into myQueue }
  54.                     hSicn := GetResource('SICN', -14348);
  55.                     if hSicn <> nil then
  56.                         BlockMove(hSicn^, @myQueue.sicn, 32);
  57.                 end;
  58.  
  59.             regularX: 
  60.                 begin
  61.                 { time to do the action called for in our key }
  62.                     if myData.lWaitTime <= 0 then
  63.                         begin
  64.                             SysBeep(1);
  65.                         end
  66.                     else
  67.                         begin
  68.                     { need to wait a while before playing }
  69.                     { Save the time we're going to beep in the refcon, enable }
  70.                     { periodic calls, and exit.  Periodic calls will do the rest. }
  71.                             GetDateTime(ulNow);
  72.                             myQueue.lRefCon := ulNow + myData.lWaitTime;
  73.                             myQueue.flags := bor(myQueue.flags, PeriodicFlag);
  74.                         end;
  75.                 end;
  76.  
  77.             periodicX: 
  78.                 begin
  79.                 { check for the right time to beep }
  80.                     GetDateTime(ulNow);
  81.                     if ulNow >= myQueue.lRefCon then
  82.                         begin
  83.                             myQueue.flags := band(myQueue.flags, bnot(PeriodicFlag));
  84.                             SysBeep(1);
  85.                         end;
  86.                 end;
  87.  
  88.             abortX: 
  89.                 ;        { nothing do do here }
  90.         end;
  91.  
  92.     end;
  93.  
  94. end.